package com.zhxy.manager.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zhxy.manager.dao.GradeDao;
import com.zhxy.manager.dto.GradeDto;
import com.zhxy.manager.dto.GradeTjDto;
import com.zhxy.manager.entity.Grade;
import com.zhxy.manager.service.intf.GradeService;
import com.zhxy.manager.vo.PageBean;
import com.zhxy.manager.vo.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class GradeServiceImpl implements GradeService {
    @Autowired
    private GradeDao dao;

    //添加
    @Override
    public R save(Grade grade) {
        if (dao.add(grade)>0){
            return R.ok();
        }else{
            return R.fail();
        }
    }
    //分页查询
    @Override
    public PageBean queryPage(int page, int limit) {
        //分页插件分页
        PageHelper.startPage(page, limit);
        //获取分页结果（查询数据库数据）
        PageInfo<Grade> PageInfo = new PageInfo<>(dao.selectAll());
        //返回分页的数据
        return PageBean.bean(PageInfo.getTotal(),PageInfo.getList());
    }
    //删除
    @Override
    public R del(int id) {
        if(id>0){
            if(dao.del(id)>0){
                return R.ok();
            }
        }
        return R.fail();
    }


    //修改
    @Override
    public R update(Grade grade) {
        if(dao.update(grade)>0){
            return R.ok();
        }
        return R.fail();
    }
    //条件查询
//    @Override
//    public PageBean queryPageWhere(String class_name,  int page, int limit) {
//        //1.条件处理
//        if(StringUtils.hasLength(class_name)){
//            class_name="%"+class_name+"%";
//        }else{
//            class_name=null;
//        }
//        //2.分页
//        PageHelper.startPage(page, limit);
//        //3.获取分页结果
//        PageInfo<Grade> pageInfo=new PageInfo<>(dao.selectWhere(class_name));
//        //4.返回分页的数据
//        return PageBean.bean(pageInfo.getTotal(), pageInfo.getList());
//    }


    //批量删除
    @Override
    public R delBatch(int[] ids) {
        //1.验证参数
        if(ids!=null && ids.length>0){
            //2.执行
            if(dao.delBatch(ids)>0){
                return R.ok();
            }
        }
        return R.fail();
    }

    @Override
    public PageBean queryTea(String class_name, int page, int limit) {
        //1.条件处理
        if(StringUtils.hasLength(class_name)){
            class_name="%"+class_name+"%";
        }else{
            class_name=null;
        }
        //2.分页
        PageHelper.startPage(page, limit);
        //3.获取分页结果
        PageInfo<GradeDto> pageInfo=new PageInfo<>(dao.selectTea(class_name));
        //4.返回分页的数据
        return PageBean.bean(pageInfo.getTotal(), pageInfo.getList());
    }

    @Override
    public R queryTj() {
        //查询图表统计
        List<GradeTjDto> list = dao.selectTj();
        System.out.println(list);
        //根据前端组装数据
        Map<String,List<Object>> map = new HashMap<>();
        map.put("grades",new ArrayList<>());//班级
        map.put("nums",new ArrayList<>());//人数
        //组装数据函数式编程
        list.forEach(f->{
            map.get("grades").add(f.getGrades());
            map.get("nums").add(f.getNums());
        });
        return R.ok(map);
    }

    @Override
    public List<Grade> queryAll() {
        return dao.selectAll();
    }
}

